package com.prevpn.dto;

import lombok.Data;

import java.util.Map;

/**
 * Web 应用实体类（完整参数版）
 * 对应 /api/v1/resource/createResource 请求体
 */
@Data
public class WebAppDTO {

    /* ========================= 基本信息 ========================= */
    private String accessModel = "WEB";        // 访问模式
    private String subModel = "WEB";           // 子访问模式
    private String name;                       // 应用名称（必填）
    private String description;                // 描述

    /* ========================= 应用分类 ========================= */
    private String groupId;                    // 应用分类 ID
    private String groupName;                  // 应用分类名称（与 groupId 二选一）

    /* ========================= 节点区域 ========================= */
    private String nodeGroupId;                // 节点区域 ID
    private String nodeGroupName;              // 节点区域名称（与 nodeGroupId 二选一）

    /* ========================= 状态、图标与配置 ========================= */
    private Integer status = 1;                // 启用状态（1=启用，0=禁用）
    private String iconId = "1";               // 图标 ID
    private Integer allowApply = 1;            // 是否允许自助申请（1=允许）
    private Integer enableGm = 0;              // 是否启用国密（1=启用）
    private Integer enableBackupCert = 0;      // 是否启用备用证书
    private Integer pathListLimit = 0;         // 是否启用 URL 发布
    private Integer enableBackup = 0;          // 启用备用配置（保留）

    /* ========================= 地址信息 ========================= */
    private String appAddress;                 // 后端服务器地址（必填）
    private String aliasAppAddresses;          // 后端服务器别名（逗号分隔）
    private String accessAddress;              // 前端访问地址（必填）
    private String accessEntry;                // 浏览器打开地址（必填）

    /* ========================= 证书信息 ========================= */
    private String trustedCertId;              // 授信证书 ID（优先级高）
    private String trustedCertName;            // 授信证书名称
    private String sm2signCertId;              // 商密签名证书 ID
    private String sm2signCertName;            // 商密签名证书名称
    private String sm2encCertId;               // 商密加密证书 ID
    private String sm2encCertName;             // 商密加密证书名称

    /* ========================= 扩展字段 ========================= */
    private Map<String, Object> ext;           // hide, dependSites, paths, security 等

    /* ========================= 申请信息 ========================= */
    private Map<String, Object> applyForInfo;  // content, accessReason

    /* ========================= 打开方式配置 ========================= */
    private Map<String, Object> openModel;     // Windows/Linux/Mac 各平台配置

    /* ========================= Web 应用配置 ========================= */
    private Map<String, Object> webConf;       // passReqHost, loadBalance, pathList 等

    /* ========================= 单点登录配置 ========================= */
    private Map<String, Object> ssoConfig;     // enable=false 即禁用（一般不建议启用）
}
